package pe.bf.extranet.ejb;
 
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.sql.DataSource;

import pe.bf.domain.bean.Empresa;
import pe.bf.domain.constantes.Constantes;
import pe.bf.domain.exceptions.DomainException;
import pe.bf.extranet.dao.EmpresaDAO;
import pe.bf.extranet.dao.impl.EmpresaDAOImpl;

/**
 * Session Bean implementation class EmpresaEJB
 */
@WebService
@Singleton
@LocalBean
public class EmpresaEJB {
//	@Resource(mappedName=Constantes.JNDI_DATASOURCE)
	public DataSource dataSource;

	public EmpresaDAO EmpresaDAO;

	/**
	 * Default constructor.
	 */
	public EmpresaEJB() {
		// TODO Auto-generated constructor stub
	}

	@WebMethod
	public boolean crearEmpresa(Empresa Empresa) {
		try {
			EmpresaDAO.crearEmpresa(Empresa);
			return true;
		} catch (DomainException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}
	
	@WebMethod
	public boolean bajaEmpresa(Empresa Empresa) {
		try {
			EmpresaDAO.bajaEmpresa(Empresa);
			return true; 
		} catch (DomainException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}
	
	@WebMethod
	public boolean actualizarEmpresa(Empresa Empresa) {
		try {
			EmpresaDAO.actualizarEmpresa(Empresa);
			return true;
		} catch (DomainException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}
	 
 
	@WebMethod
	public List<Empresa> listarEmpresa() {
		List<Empresa> lista=new ArrayList();
		try {
			lista=EmpresaDAO.listarEmpresas();  
			
			lista=EmpresaDAO.listarContactosEmpresas(lista);
		} catch (DomainException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return lista;
	}
	
	@PostConstruct
	public void init() {
		EmpresaDAO = new EmpresaDAOImpl(dataSource);
	}


}
